﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#if !DOT_NET
using Windows.Foundation.Collections;

#endif

namespace StyleMVVM.Data.Transform
{
	/// <summary>
	/// This interface allows you to map a transform between types.
	/// </summary>
	public interface ITransformMap
	{
		/// <summary>
		/// Are properties allowed to be unmapped in the transform
		/// </summary>
		/// <param name="isLoose"></param>
		/// <returns></returns>
		ITransformMap IsLooseTransform(bool isLoose);

		/// <summary>
		/// Type to transform from
		/// </summary>
		/// <param name="inType"></param>
		/// <returns></returns>
		ITransformMap InType(Type inType);

		/// <summary>
		/// Type to tranform to
		/// </summary>
		/// <param name="outType"></param>
		/// <returns></returns>
		ITransformMap OutType(Type outType);

		/// <summary>
		/// Use this to map properties between types
		/// </summary>
		ITransformPropertyMap MapProperty { get; }

		/// <summary>
		/// You must call this when you are done with your map.
		/// </summary>
		void MapComplete();
	}
}